﻿using System;
using System.Collections.Generic;
using System.Text;

namespace WPFCABShell.Shell.Interface
{
	/// <summary>
	/// Defines the IDs and metadata for the extension sites provided by the shell.
	/// </summary>
	public static class ExtensionSites
	{
		/// <summary>
		/// Defines extension sites in the main menu.
		/// </summary>
		public static class Menu
		{
			public static readonly string Name = "site://Menu";

			public static class File
			{
				public static readonly string Name = "site://Menu/File";
				public static readonly int GroupIndex = 0;
				public static readonly int Index = 0;

				public static class Exit
				{
					public static readonly int GroupIndex = int.MaxValue;
					public static readonly int Index = int.MaxValue;
				}
			}

			public static class Edit
			{
				public static readonly string Name = "site://Menu/Edit";
				public static readonly int GroupIndex = 0;
				public static readonly int Index = 10;

				public static class Undo
				{
					public static readonly int GroupIndex = 0;
					public static readonly int Index = 0;
				}

				public static class Redo
				{
					public static readonly int GroupIndex = 0;
					public static readonly int Index = 1;
				}

				public static class Cut
				{
					public static readonly int GroupIndex = 10;
					public static readonly int Index = 0;
				}

				public static class Copy
				{
					public static readonly int GroupIndex = 10;
					public static readonly int Index = 1;
				}

				public static class Paste
				{
					public static readonly int GroupIndex = 10;
					public static readonly int Index = 2;
				}

				public static class Delete
				{
					public static readonly int GroupIndex = 10;
					public static readonly int Index = 10;
				}

				public static class SelectAll
				{
					public static readonly int GroupIndex = 20;
					public static readonly int Index = 0;
				}
			}

			public static class View
			{
				public static readonly string Name = "site://Menu/View";
				public static readonly int GroupIndex = 0;
				public static readonly int Index = 20;

				public static class ToolBars
				{
					public static readonly string Name = "site://Menu/View/ToolBars";
					public static readonly int GroupIndex = 100;
					public static readonly int Index = 0;
				}

				public static class Skins
				{
					public static readonly string Name = "site://Menu/View/Skins";
					public static readonly int GroupIndex = 200;
					public static readonly int Index = 0;
				}
			}

			public static class Tools
			{
				public static readonly string Name = "site://Menu/Tools";
				public static readonly int GroupIndex = 0;
				public static readonly int Index = 30;

				public static class Options
				{
					public static readonly int GroupIndex = 0;
					public static readonly int Index = 0;
				}
			}

			public static class Help
			{
				public static readonly string Name = "site://Menu/Help";
				public static readonly int GroupIndex = 0;
				public static readonly int Index = 40;
			}
		}

		/// <summary>
		/// Defines extension sites in context menus.
		/// </summary>
		public static class ContextMenus
		{
			public static class ToolBars
			{
				public static readonly string Name = "site://ContextMenu/ToolBars";
			}
		}

		/// <summary>
		/// Defines extension sites in the application tool bar.
		/// </summary>
		public static class ToolBar
		{
			public static readonly string Name = "site://ToolBar";

			public static class Edit
			{
				public static readonly string Name = "site://ToolBar/Edit";

				public static class Undo
				{
					public static readonly int GroupIndex = 0;
					public static readonly int Index = 0;
				}

				public static class Redo
				{
					public static readonly int GroupIndex = 0;
					public static readonly int Index = 1;
				}

				public static class Cut
				{
					public static readonly int GroupIndex = 10;
					public static readonly int Index = 0;
				}

				public static class Copy
				{
					public static readonly int GroupIndex = 10;
					public static readonly int Index = 10;
				}

				public static class Paste
				{
					public static readonly int GroupIndex = 10;
					public static readonly int Index = 20;
				}
			}
		}

		/// <summary>
		/// Defines extension sites for application options.
		/// </summary>
		public static class Options
		{
			public static readonly string Name = "site://Options";
		}
	}
}
